package LeeJS;

public class J02_Operators {
	
	/*
	연산자(operator)
	컴퓨터 프로그램은 특정 기능을 수행할 작업들의 모음
	연산자는 이러한 작업을 표현하는 기호
	작업에는 더하기, 빼기, 곱하기, 나누기, 비트 이동 등이 있음
	(비트 이동이란?     0011 = 3 에서 왼쪽으로 2칸 이동하면 1100 = 12가됨)
	연산자는 한/두/세 개의 피 연산자에서 작업을 수행함
	피 연산자(operand)는 작업의 대상을 의미
	
	
	*/
	public static void main(String[] args) {

		
		//단항 연산자 : ++, --, !
		int val1 = 10;
		int val2 = ++val1;				// val1 = val1 + 1;(값 1증가)
		int val3 = --val1;					// val1 = val1 - 1;(값 1감소)
		boolean isMarried = true;
		
		//2.산술 연산자 : +, -, *, /, %
		int op1 = 773;
		int op2 = 235;
		int op3 = 123;
		int op4 = 23;
		
		int plus = op1 + op2;
		int sub = op1 - op2;
		int mul = op1 * op2;
		int div = op1 / op2;
		
		/*
		정수를 정수로 나누면 결과도 정수
		float div2 = op1 / (float) op2;
		실수를 정수로 나누면 결과는 실수 수식의 결과 유형과 
		그것을 저장하는 변수의 유형은 서로 일치해야 함
		 */
		
		float div2 = op1 / op2;
		float div3 = op3 / (float) op4;
		double div4 = op3 / (float) op4;
		double div5 = op3 / (double) op4;
		
		/*
		
		실수 형변환에 따라 미세한 오차가 발생할 수 있음
		Math 클래스를 이용하면 오차를 줄일 수 있음
		
		 */
		
		int mod = op1 % op2;
		//정수를 정수로 나누면 결과도 정수
		
		
	//	관계/동등 연산자 : >, <, >=, <=, ==, !=
		
		boolean rel1 = 100 > 150;
		boolean rel2 = 100 < 150;
		boolean rel3 = 100 >= 150;
		boolean rel4 = 100 <= 150;
		boolean rel5 = 140 == 130;
		boolean rel6 = 167 != 132;
		boolean rel7 = op1 == op2;
		boolean rel8 = op3 != op4;
		
	//	조건 연산자 : AND, OR, &&, ||, !, ? :
		
		boolean cond1 = (100 > 150) && (op1 == op2);
			/*	
			
				short-circuit 연산
				조건 연산 처리시 첫째 항의 연산 결과로 의해
				전체 수식의 결과를 바로 알 수 있는 경우
				나머지 항의 수식은 연산하지 않음
				
			*/
		boolean cond2 = (op1 == op2) && (100 > 150);
		boolean cond3 = (100 > 150) || (op1 == op2);
		char cond4 = (op1 == op2) ? '후' : '암' ;
				//	삼항 연산자 ? '참일때 처리할 형식' : '거짓일때 처리할 형식' 
					
		
				//	대입 연산자 : =, +=, -=, *=, /=, %=
		
		int assg1 = 100;
		int assg2 = 100;
		int assg3 = 100;
		int assg4 = 100;
		int assg5 = 100;
		
		assg1 += 200;			 //assg1 = assg1 + 200;
		assg2 -= 200;			 //assg2 = assg2 - 200;
		assg3 *= 200;		 	 //assg3 = assg3 * 200;
		assg4 /= 50;				 //assg4 = assg4 / 50;
		assg5 %= 30;				 //assg5 = assg5 % 30;
		
		
		//결과 출력
		System.out.println(val2);
		System.out.println(val3);
		System.out.println( ! isMarried);
		System.out.println(plus);
		System.out.println(sub);
		System.out.println(mul);
		System.out.println(div);
		System.out.println(div2);
		System.out.println(div3);
		System.out.println(div4);
		System.out.println(div5);
		System.out.println(mod);
		System.out.println(rel1);
		System.out.println(rel2);
		System.out.println(rel3);
		System.out.println(rel4);
		System.out.println(rel5);
		System.out.println(rel6);
		System.out.println(rel7);
		System.out.println(rel8);
		System.out.println(cond1);
		System.out.println(cond2);
		System.out.println(cond3);
		System.out.println(cond4);
		System.out.println(assg1);
		System.out.println(assg2);
		System.out.println(assg3);
		System.out.println(assg4);
		System.out.println(assg5);
		
	}

}
